#ifndef CAMERAHANDLER_H_
#define CAMERAHANDLER_H_
#include <GL/glut.h>
#include <math.h>

#include "../spec/FotoIdObject.h"
#include "../spec/MapObject.h"

class CameraHandler : public Elem3D
{
private:
 
 float larg;
 float alt;
 
 //numero vista
 static int view;
 int old_view;
 
 //altezza; 
 int height_to_go;
 
 //scritta no fly zone
 bool noflyzone;
 
 //variabili per terremoto
 bool earthquake;    
 float factQ;
 float angQ;
 
 //punto di vista
 float eyeX;  
 float eyeY;
 float eyeZ;
 float Oldeye[3];
 
 //distacchi
 double dz;
 double dx;
 
 //posizione iniziale della camera
 float InitCamPos[3];
 float InitCamPosAdder[3];
 int step_counter;
 
//andrebbe singleton    
public:
    CameraHandler(GameStatus* g): Elem3D(g){};
	CameraHandler();
	virtual ~CameraHandler();
    void ChangeView();
    void Init();
    void DoIdle();
    void Move();
    void ResizeView(int larg ,int alt);
    void Camera_Earthquake();
    void Camera_NoFlyZone() {noflyzone = true;}
    void Camera_Fullscreen();
    void ChangeMotionBlur();
    void MotionBlur();
    void DoIdle_Start_Pos();
    bool Fly_Zone_Control();
    void Camera_Mouse_Mov(int x0,int y0,int x,int y);
    void MvLeft(int i);
    void Move_View();
    void SelFarPos();
    void Save();
    void Restore();
};

#endif /*CAMERAHANDLER_H_*/
